package com.gitee.wsl.android.net

import android.os.Parcel
import android.os.Parcelable


open class BaseResponse() : Parcelable {
    //回复类型
    var responseMsgType = 0

    //流水号，可去除
    var serialNumber = 0

    //数据
    lateinit var data: ByteArray

    //结果码，可去除
    var resultCode = 1

    constructor(parcel: Parcel) : this() {
        responseMsgType = parcel.readInt()
        serialNumber = parcel.readInt()
        data = parcel.createByteArray()!!
        resultCode = parcel.readInt()
    }

    //从字节数组里获得数据，需要子类重写
    protected fun parseData() {}
    override fun describeContents(): Int {
        return 0
    }

    override fun writeToParcel(parcel: Parcel, i: Int) {
        parcel.writeInt(responseMsgType)
        parcel.writeInt(serialNumber)
        parcel.writeInt(data.size)
        parcel.writeByteArray(data)
    }

    companion object CREATOR : Parcelable.Creator<BaseResponse> {
        override fun createFromParcel(parcel: Parcel): BaseResponse {
            return BaseResponse(parcel)
        }

        override fun newArray(size: Int): Array<BaseResponse?> {
            return arrayOfNulls(size)
        }
    }
}

interface ResponseCallback {
    fun onResponse(response: BaseResponse)
    fun onError(requestMsgType: Int) {}
    fun onTimeout(requestMsgType: Int) {}
}